home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1989-10-20 | 3.0 KB | 82 lines |
- IMPLEMENTATION MODULE Support;
-
- (*======================================================================*)
- (* SuperSHAM Support Routines *)
- (*======================================================================*)
- (* ⌐ Copyright 1989 Robert Salesas, All Rights Reserved *)
- (* Use as you please!!! *)
- (*======================================================================*)
- (* Version: 3.10 Author : Robert Salesas *)
- (* Date : 05-Oct-89 Changes: Original *)
- (*======================================================================*)
-
-
- (*$L+*)
-
- FROM SYSTEM IMPORT ADR, BYTE, STRPTR;
- FROM Intuition IMPORT DisplayAlert, WindowPtr, IntuiMessagePtr;
- FROM Strings IMPORT LengthStr, AssignStr;
- FROM LoadSHAM IMPORT SHAMRegsPtr;
- FROM EasyPrintPict IMPORT PrintRastPort;
- FROM Views IMPORT ColorMap, ViewModeSet, ViewModes;
- FROM Ports IMPORT GetMsg, ReplyMsg;
-
-
- PROCEDURE Alert(First, Second : ARRAY OF CHAR) : BOOLEAN;
- VAR
- AlertString : ARRAY [0..255] OF BYTE;
- StringPtr : STRPTR;
- Len : CARDINAL;
- BEGIN
- Len := LengthStr(First);
-
- AlertString[0] := BYTE((80 - Len) * 4 DIV 256);
- AlertString[1] := BYTE((80 - Len) * 4 MOD 256);
- AlertString[2] := BYTE(14);
- StringPtr := ADR(AlertString[3]); AssignStr(StringPtr^, First);
- AlertString[Len + 3] := BYTE(0); AlertString[Len + 4] := BYTE(1);
-
- AlertString[Len + 5] := BYTE((80 - LengthStr(Second)) * 4 DIV 256);
- AlertString[Len + 6] := BYTE((80 - LengthStr(Second)) * 4 MOD 256);
- AlertString[Len + 7] := BYTE(24);
- StringPtr := ADR(AlertString[Len + 8]); AssignStr(StringPtr^, Second);
- Len := Len + LengthStr(Second);
- AlertString[Len + 8] := BYTE(0); AlertString[Len + 9] := BYTE(1);
-
- AlertString[Len + 10] := BYTE(0); AlertString[Len + 11] := BYTE(16);
- AlertString[Len + 12] := BYTE(40);
- StringPtr := ADR(AlertString[Len + 13]); AssignStr(StringPtr^,
- "Left Mouse Button To Print... Right Mouse Button To Continue...");
- AlertString[Len + 89] := BYTE(0); AlertString[Len + 90] := BYTE(0);
-
- RETURN DisplayAlert(NIL, ADR(AlertString), 50);
- END Alert;
-
- PROCEDURE PrintScreen(Wp : WindowPtr; Regs : SHAMRegsPtr) : BOOLEAN;
- VAR
- L : CARDINAL;
- CMap : ColorMap;
- Succ : BOOLEAN;
- Msg : IntuiMessagePtr;
- BEGIN
- CMap := Wp^.WScreen^.VPort.ColorMap^;
- L := 0;
- REPEAT
- CMap.ColorTable := ADR(Regs^[L, 0]);
- IF (Wp^.Height > 200) THEN
- Succ := PrintRastPort(Wp^.RPort, ADR(CMap), ViewModeSet{Lace, HAM}, 0, L + L, 320, 2);
- ELSE
- Succ := PrintRastPort(Wp^.RPort, ADR(CMap), ViewModeSet{HAM}, 0, L, 320, 1);
- END;
- Msg := GetMsg(Wp^.UserPort);
- IF (Msg # NIL) THEN
- ReplyMsg(Msg);
- Succ := FALSE;
- END;
- INC(L);
- UNTIL (NOT Succ) OR (L = 200);
- RETURN Succ;
- END PrintScreen;
-
- END Support.
-